

void main()
{
int divisor;
int principal;

divisor = 6;
principal = 125;

_AdividesB(divisor,principal);  

_Exit();
}


/*c-g
Program AdividesB does not include a divide instruction
This routine divides by subtraction
Divide A into B and return times and remainder
*/


int _AdividesB()  //a-5
{
// input
assign t1 divisor     //a-
assign t2 principal   //a-

//uses
assign t3 times       //a-
assign t4 diff        //a-
assign t5 remainder   //a-

//returns
x1 = times
x2 remainder

//s- zero times and remainder
addi times,zero,0
addi remainder,zero,0

//s- Print out divisor and principle
//cout << "divisor = " <<  x6  <<  endl;
//cout << "principal = "  <<  x7 <<  endl << endl;

//N-Done divisor > principal ?
blt t2,t1,Done

//s- remainder = principal
addi remainder,principal,0

Next:

//s- times += 1
addi times,times,1 

//s- remainder = remainder - divisor
sub remainder,remainder,divisor

bge remainder,divisor,Next
//N-Next remainder > divisor

Done:
//cout << "Result:"  << endl;
//s- Print out times and remainder
//cout << "Times = "  << x28 << endl;
//cout << "Remainder = "  << x30 <<  endl;

addi t2,remainder,0
addi t1,times,0

//x-
}
